package com.koron.css2.meterService.mapper;

import com.koron.css2.meterService.bean.MsInfoBean;
import com.koron.css2.meterService.bean.query.MsInfoQueryBean;
import com.koron.css2.meterService.dto.MsInfoDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.math.BigDecimal;
import java.util.List;

public interface MsInfoMapper {

	/**
	 * 批量修改水表信息状态字段值
	 * @param idList 主键ID集合
	 * @param status 状态值
	 * @return
	 */
	int batchUpdateStatus(@Param("idList")  List<String> idList, @Param("status") int status);
	
	/**
	 * 查询列表
	 * 
	 * @return
	 */
	List<MsInfoDto> selectMsInfoList(MsInfoQueryBean msInfoQueryBean);

	List<MsInfoDto> selectMsInfoListOpt(MsInfoQueryBean msInfoQueryBean);
	/**
	 * 模糊查询列表
	 *
	 * @return
	 */
	List<MsInfoDto> selectMsInfoListByFuzzy(MsInfoQueryBean msInfoQueryBean);


	/**
	 * 根据水表编号获取水表信息
	 * @param meterNo
	 * @return
	 */
	MsInfoDto getMsInfoByNo(String meterNo);

	/**
	 * 根据水表编号获取水表信息
	 * @param id
	 * @return
	 */
	MsInfoDto getMsInfoById(@Param("id") String id);

	/**
	 * 根据水表编号获取水表信息
	 * @param ids
	 * @return
	 */
	List<MsInfoDto> getMsInfoByIds(@Param("idList") List<String> idList);
	
	/**
	 * 根据出厂编号获取水表信息
	 * @param factoryNo
	 * @return
	 */
	MsInfoDto getMsInfoByFactoryNo(String factoryNo);
	/**
	 * 获取水表状态
	 * @param meterNo
	 * @return
	 */
	String getMeterSatus(@Param("meterNo") String meterNo);
	/**
	 * 获取水表厂家编号
	 * @param meterNo
	 * @return
	 */
	@Select("select meter_factory from ms_info where METER_NO =#{meterNo} LIMIT 1")
	String getMeterFactory(@Param("meterNo") String meterNo);
	
	@Select("select count(0) from ms_info where factory_no = #{factoryNo} LIMIT 1")
	int countMsInfoByFactoryNo(@Param("factoryNo") String factoryNo);
	
	int updateMsInfoStatus(@Param("meterNo") String meterNo, @Param("status") int status);

	int updateMsInfoStatusById(@Param("id") String id, @Param("status") int status);
	
	int updateMsInfoUserNo(@Param("meterNo") String meterNo, @Param("userNo") String userNo);

	int updateUploadFlagByMeterNo(@Param("meterNos") List<String> meterNos);
	
	int addMsInfo(MsInfoBean msInfo);
	
	int deleteByMeterNo(String meterNo);

	int updateMsInfo(MsInfoBean bean);
	
	int updateMsInfoByMeterNo(MsInfoBean bean);

	int updateUserInfoByMeterNo(MsInfoBean bean);

	List<String> getMeterNoListByMeterStatus(@Param("meterStatus") BigDecimal meterStatus);

	@Select("select id from ms_info where factory_no =#{factoryNo}")
	String getIdByFactoryNo(@Param("factoryNo") String factoryNo);

	String getIdByMeterNo(@Param("meterNo") String meterNo);

	/**
	 * 查询此水表是否远传表
	 */

	String getMeterTypeByMeterNo(String meterNo);

    /**
     * 根据用户编号修改水表阀门状态
     * @param userNo
     * @param valveStatus
     * @return
     */
    int updateValveStatusByUserNo(@Param("userNo")String userNo ,@Param("valveStatus") String valveStatus);

	@Select("select meter_no from user_info where user_no =#{userNo}")
	String geMeterNoByUserNo(@Param("userNo") String userNo);

	String getMeterNoByFactoryNo(@Param("factoryNo") String factoryNo);
}
